/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.losalpes.persistence;

import java.util.List;
import javax.ejb.Local;

/**
 *
 * @author Henry.Quiroga
 */
@Local
public interface IPersistenceServices {

    /**
     * Permite crear un objeto nuevo
     * @param obj el objeto a insertar
     */
    public void create(java.lang.Object obj);

    /**
     * Permite actualizar un objeto de la base de datos
     * @param obj
     */
    public void update(java.lang.Object obj);

    /**
     * Permite eliminar un objeto de la base de datos
     * @param obj
     */
    public void delete(java.lang.Object obj);

    /**
     * Lista todos los elementos de una lista
     * @param c: Nombre de la clase
     * @return una lista con todos los elementos de la lista
     */
    public List findAll(java.lang.Class c);

    /**
     * Busca un elemento Id de la lista
     * @param c: Nombre de la clase
     * @return una lista con todos los elementos de la lista
     */
    public java.lang.Object findById(java.lang.Class c, java.lang.Object id);

    /**
     * Busca elementos de la lista basados en una consulta y en una serie de parametros
     * @param sql: sentencia a ejecutar
     * @param parametros: lista de parametros a usar en la consulta
     * @return una lista de coincidencias
     */
    public List findQuery(String sql, List<String> parametrosNombre, List<Object> parametrosValor);

    /**
     * Busca elementos de la lista basados en una consulta y en un parametro
     * @param sql: sentencia a ejecutar
     * @param parametros: lista de parametros a usar en la consulta
     * @return una lista de coincidencias
     */
    public List findQuery(String sql, String parametroNombre, Object parametroValor);

    /**
     * Busca elementos de la lista basados en una consulta sin parametros
     * @return una lista de coincidencias
     */
    public List findQuery(String sql);
}
